package com.ruoyi.order.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.basic.service.IBaseService;
import com.param.concat.IIdParam;
import com.param.concat.IToExamineParamBySearch;
import com.param.concat.IUpdatePaymentParam;
import com.ruoyi.order.domain.MgOrder;

/**
 * 订单Service接口
 * 
 * @author ruoyi
 * @date 2023-12-24
 */
public interface IMgOrderService extends IBaseService<MgOrder>
{
    /**
     * 查询订单
     * 
     * @param id 订单主键
     * @return 订单
     */
    public MgOrder selectById(Integer id);
    
    /**
     * 是否取消支付管理的订单
     * @return
     */
    boolean isCancelledByPayManager(long payMangerId);
    
    
    /**
     * 加锁
     * @param id
     * @return
     */
    MgOrder selectOrderForUpdate(int id);

    /**
     * 查询订单列表
     * 
     * @param mgOrder 订单
     * @return 订单集合
     */
    public List<MgOrder> selectList(MgOrder mgOrder);
    
    /**
     * 编辑查询订单
     * @param order
     * @return
     */
    List<MgOrder> selectListByEditQuery(MgOrder order);
    
    
    /**
     * 编辑 查看订单
     * @param order
     * @return
     */
    List<MgOrder> selectListByEdit(MgOrder order);

    /**
     * 新增订单
     * 
     * @param mgOrder 订单
     * @return 结果
     */
    public int insert(MgOrder mgOrder);

    /**
     * 修改订单
     * 
     * @param mgOrder 订单
     * @return 结果
     */
    public int update(MgOrder mgOrder);
    int cancelTicket(int UserId);
    /**
     * 批量删除订单
     * 
     * @param ids 需要删除的订单主键集合
     * @return 结果
     */
    public int deleteByIds(Integer[] ids);
    
    /**
     * 开始处理
     * @param id
     * @return
     */
    int startParse(Integer id);
    
    /**
     * 完工确认
     * @param id
     * @return
     */
    int completeParse(Integer id);
    
    /**
     * 查询充值记录 列表
     * 
     * @param recharge 充值记录 
     * @return 充值记录 集合
     */
    public List<MgOrder> selectList(IIdParam idParam);
    
    
    /**
     * 查询充值记录 列表
     * 
     * @param recharge 充值记录 
     * @return 充值记录 集合
     */
    public List<MgOrder> selectListByRecharge(IIdParam idParam);
    
    /**
     * tab 栏搜索
     * @param idParam
     * @return
     */
    List<MgOrder> selectListByTab(int[] idParam);
    
   
    /**
     * 删除订单信息
     * 
     * @param id 订单主键
     * @return 结果
     */
    public int deleteById(Integer id);
    
    
    /**
     * 根据支付管理获服务类类型id
     * @param payManagerId
     * @return
     */
    List<MgOrder> selectOrderByPayManagerId(int[] payManagerId);
    
    /**
     * 根据支付管理获服务类类型id
     * @param payManagerId
     * @return
     */
    List<MgOrder> selectOrderByPayManagerIdForUpdate(int[] payManagerId);
    
    /**
     * 更新teamId
     * @param teamId
     * @param userId
     * @return
     */
    int updateTeamId(int teamId, int userId);
    
    int updateAlreadyPay(IUpdatePaymentParam managerParam);
    
    /**
     * 审核二次服务
     * @param examineParam
     * @return
     */
    int toExamineService(IToExamineParamBySearch examineParam);
    
    
    /**
     * 计算当月字数
     * @return
     */
    int computerWordSizeByThisMoth(List<Integer> serverIds, long processed);
    
}
